package 力扣;
//如果连续数字之间的差严格地在正数和负数之间交替，则数字序列称为摆动序列。
// 第一个差（如果存在的话）可能是正数或负数。少于两个元素的序列也是摆动序列。
//给定一个整数序列，返回作为摆动序列的最长子序列的长度。
// 通过从原始序列中删除一些（也可以不删除）元素来获得子序列，剩下的元素保持其原始顺序
public class 摆动序列 {
    public static void main(String[] args) {
          int[] nums={1,17,5,10,13,15,10,5,16,8};
        int i = wiggleMaxLength(nums);
        System.out.println(i);
    }
    public static int wiggleMaxLength(int[] nums) {
        int n=nums.length;
        if (n<2)
            return n;
        //存储差值的列表
        if (nums.length <= 1) {
            return nums.length;
        }
        // 计算方法应该比较简单，先确定一个顺序，当出现变化时，结果++
        int pre = 0;
        int result = 1;

        for (int i = 0; i < nums.length - 1; i++) {
            int cur = nums[i + 1] - nums[i];
            // 如果出现交替，则结果长度+1，并且将cur 替换 pre
            if ((cur > 0 && pre <= 0) || (cur < 0 && pre >= 0)) {
                result++;
                pre = cur;
            }
        }
        return result;
    }
}
